In general, most image/video coding algorithms, such as the ISO/IEC 14496-2 Part 10 International Standard, utilize a block partitioning method. In a block partitioning method, an uncompressed original picture is partitioned into a number of M×N units of coding. Here, M denotes the number of samples in width and N denotes the number of samples in height. Examples of M and N values are 16 and 16, respectively.
Resulting units of coding are coded sequentially one after another. In most video coding algorithms, such as the ISO/IEC 14496-2 Part 10 International Standard, a unit of coding is usually referred to as a “macroblock”. For clarity of description, the term “macroblock” may be used hereinafter to refer to the M×N unit of coding in an image/video coding algorithm.
Each macroblock is further partitioned into a number of K×L sub-macroblocks. Here, K denotes the number of samples in width and L denotes the number of samples in height. Examples of K and L values are 8 and 8, respectively. Coding processes are performed on the resulting sub-macroblocks sequentially one after another and, in some cases, independently of each other. Examples of sub-macroblock partitioning for sub-macroblock coding processes are transformation block sizes, intra prediction block sizes, and motion compensation block sizes. During the coding of a macroblock, different sub-macroblock partitioning may be used for different sub-macroblock coding processes.
Most video coding algorithms provide the flexibility of switching between several sub-macroblock coding tools. For example, the High Profile of the ISO/IEC 14496-2 Part 10 International Standard allows macroblock-level switching between 4×4 and 8×8 transformation block sizes (see Patent Literature (PTL) 1).